﻿using NP.BPMReportPlatform.Entities.BPM_Business.Reports;
using NP.BPMReportPlatform.Reports.CommonApprovalProcessReport.Dtos;
using NPOI.SS.UserModel;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;

namespace NP.BPMReportPlatform.Reports.CommonApprovalProcessReport
{
    public interface ICommonApprovalProcessService : IApplicationService
    {
        Task<PagedResultDto<GetCommonApprovalProcessOutput>> GetAllAsync(GetCommonApprovalProcessInput input);

        Task<GetConfigsOutput> GetConfigs(string btid);

        Task<IWorkbook> ExportAsync(GetCommonApprovalProcessInput input);

        Task AddOrUpdateConfig(CommonApprovalProcessConfig config);

        Task<PagedResultDto<CommonApprovalProcessConfig>> GetConfigPageList(CommonApprovalProcessConfigInput input);

        Task DeleteConfig(Guid id);

        Task<PagedResultDto<CommonApprovalProcessConfigHeaderDto>> GetHeaderAllAsync(CommonApprovalProcessConfigHeaderInput input);

        Task<List<CommonApprovalProcessConfigHeaderDto>> ExportHeaderExcel(CommonApprovalProcessConfigHeaderInput input);

        Task HeaderAddOrUpdateConfig(CommonApprovalProcessConfigHeader header);

        Task DeleteHeader(string BTID);



        Task<PagedResultDto<CommonApprovalProcessSubDataConfig>> GetSubDataAllAsync(CommonApprovalProcessConfigHeaderInput input);

        Task AddOrUpdateSubData(CommonApprovalProcessSubDataConfig config);

        Task DeleteSubData(Guid Id);

        Task<PagedResultDto<CommonApprovalProcessSubDataDetailConfig>> GetSubDataDetailAllAsync(CommonApprovalProcessConfigHeaderInput input);

        Task AddOrUpdateSubDataDetail(CommonApprovalProcessSubDataDetailConfig config);

        Task DeleteSubDataDetail(Guid Id);

        Task<List<CommonApprovalProcessSubDataConfig>> GetSubDataConfigs(string BTID);

        Task<object> SearchSubDataList(GetCommonApprovalProcessInput input);

        Task<byte[]> ExportSubDataList(GetCommonApprovalProcessInput input);
    }
}
